ãµãŒããŒã³ã³ããŒãã³ãã«ãããã¡ã¢ãªç®¡çã®ããã®Reactã®ãã£ãã·ã¥é¢æ°ãæ¢ããŸããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã§ã®ããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãåäžãããããã®ãã£ãã·ã¥æŠç¥ãæé©åããæ¹æ³ãåŠã³ãŸãããã
Reactãã£ãã·ã¥é¢æ°ã®ã¡ã¢ãªç®¡çïŒã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³åããµãŒããŒã³ã³ããŒãã³ããã£ãã·ã¥ã®æé©å
React Server ComponentsïŒRSCïŒã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯æ¹æ³ã«é©åœãããããããµãŒããŒäžã§ã¬ã³ããªã³ã°ããžãã¯ãå¯èœã«ããäºåã«ã¬ã³ããªã³ã°ãããHTMLãã¯ã©ã€ã¢ã³ãã«é
ä¿¡ããŸãã ãã®ã¢ãããŒãã¯ãããã©ãŒãã³ã¹ãSEOãããã³åæèªã¿èŸŒã¿æéã倧å¹
ã«åäžãããŸãã ãã ããRSCãæŽ»çšããå Žåãç¹ã«å€æ§ãªããŒã¿ãšãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãåŠçããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãå¹ççãªã¡ã¢ãªç®¡çãäžå¯æ¬ ã«ãªããŸãã Reactã®cache颿°ã¯ããµãŒããŒã³ã³ããŒãã³ãå
ã§é«ã³ã¹ããªæäœã®çµæããã£ãã·ã¥ããããšã«ãããã¡ã¢ãªäœ¿çšéãæé©åããããã©ãŒãã³ã¹ãåäžãããããã®åŒ·åãªã¡ã«ããºã ãæäŸããŸãã
React Cache颿°ã®çè§£
cache颿°ã¯ããµãŒããŒã³ã³ããŒãã³ãå°çšã«èšèšãããReactã®çµã¿èŸŒã¿ãŠãŒãã£ãªãã£ã§ãã 颿°ã®çµæãã¡ã¢åããåé·ãªèšç®ãåé¿ãããµãŒããŒåŽã®ãªãœãŒã¹æ¶è²»ã倧å¹
ã«åæžã§ããŸãã æ¬è³ªçã«ãæ°žç¶çãªãµãŒããŒåŽã®ã¡ã¢åããŒã«ãšããŠæ©èœããŸãã åãåŒæ°ã§åŒã³åºããšããã£ãã·ã¥ãããçµæãè¿ãããåºã«ãªã颿°ã®äžèŠãªåå®è¡ãåé¿ãããŸãã
cacheã®ä»çµã¿
cache颿°ã¯ãåäžã®é¢æ°ãåŒæ°ãšããŠåãåãããã®é¢æ°ã®æ°ããããã£ãã·ã¥ãããããŒãžã§ã³ãè¿ããŸãã ãã£ãã·ã¥ããã颿°ãåŒã³åºããããšãReactã¯ãç¹å®ã®åŒæ°ã«å¯Ÿããçµæããã§ã«ãã£ãã·ã¥ã«ååšãããã©ããã確èªããŸãã ååšããå Žåã¯ããã£ãã·ã¥ãããçµæãçŽã¡ã«è¿ãããŸãã ãã以å€ã®å Žåã¯ãå
ã®é¢æ°ãå®è¡ããããã®çµæããã£ãã·ã¥ã«ä¿åãããçµæãè¿ãããŸãã
cacheã䜿çšããã¡ãªãã
- ããã©ãŒãã³ã¹ã®åäžïŒé«ã³ã¹ããªæäœããã£ãã·ã¥ããããšã§ããµãŒããŒãåãããŒã¿ã®åèšç®ã«è²»ããæéãå€§å¹ ã«åæžã§ããŸãã
- ãµãŒããŒè² è·ã®è»œæžïŒèšç®ãå°ãªãã»ã©ããµãŒããŒã§ã®CPU䜿çšéãšã¡ã¢ãªæ¶è²»éãå°ãªããªããŸãã
- ã¹ã±ãŒã©ããªãã£ã®åŒ·åïŒæé©åããããªãœãŒã¹å©çšã«ãããã¢ããªã±ãŒã·ã§ã³ã¯ããå€ãã®ãã©ãã£ãã¯ãšãŠãŒã¶ãŒãå¹ççã«åŠçã§ããŸãã
- ã³ãŒãã®ç°¡çŽ åïŒ
cache颿°ã¯äœ¿ãããããæ¢åã®ãµãŒããŒã³ã³ããŒãã³ããšã·ãŒã ã¬ã¹ã«çµ±åãããŸãã
ãµãŒããŒã³ã³ããŒãã³ãã§ã®cacheã®å®è£
å®çšçãªäŸã䜿çšããŠãReact Server Componentsã§cache颿°ã广çã«äœ¿çšããæ¹æ³ãèŠãŠã¿ãŸãããã
åºæ¬äŸïŒããŒã¿ããŒã¹ã¯ãšãªã®ãã£ãã·ã¥
ãµãŒããŒã³ã³ããŒãã³ãå
ã§ããŒã¿ããŒã¹ãããŠãŒã¶ãŒããŒã¿ããã§ããããå¿
èŠãããã·ããªãªãæ€èšããŠãã ããã ããŒã¿ããŒã¹ããããŒã¿ããã§ããããããšã¯ãç¹ã«åãããŒã¿ãé »ç¹ã«èŠæ±ãããå Žåãæ¯èŒçã³ã¹ãã®ãããæäœã«ãªãå¯èœæ§ããããŸãã ããããcacheã䜿çšããŠãããæé©åããæ¹æ³ã§ãã
import { cache } from 'react';
const getUserData = cache(async (userId: string) => {
// ããŒã¿ããŒã¹ã¯ãšãªãã·ãã¥ã¬ãŒãïŒå®éã®ããŒã¿ããŒã¹ããžãã¯ã«çœ®ãæããŠãã ããïŒ
await new Promise(resolve => setTimeout(resolve, 500)); // ãããã¯ãŒã¯é
å»¶ãã·ãã¥ã¬ãŒã
return { id: userId, name: `User ${userId}`, email: `user${userId}@example.com` };
});
async function UserProfile({ userId }: { userId: string }) {
const userData = await getUserData(userId);
return (
User Profile
ID: {userData.id}
Name: {userData.name}
Email: {userData.email}
);
}
export default UserProfile;
ãã®äŸã§ã¯ãgetUserDataãcache颿°ã§ã©ãããããŠããŸãã ç¹å®ã®userIdã§getUserDataãæåã«åŒã³åºããããšãããŒã¿ããŒã¹ã¯ãšãªãå®è¡ããããã®çµæããã£ãã·ã¥ã«ä¿åãããŸãã åãuserIdã§åŸç¶ã®getUserDataãžã®åŒã³åºãã¯ããã£ãã·ã¥ãããçµæãçŽæ¥è¿ããããŒã¿ããŒã¹ã¯ãšãªãåé¿ããŸãã
å€éšAPIãããã§ãããããããŒã¿ã®ãã£ãã·ã¥
ããŒã¿ããŒã¹ã¯ãšãªãšåæ§ã«ãå€éšAPIããããŒã¿ããã§ããããããšãã³ã¹ãããããå¯èœæ§ããããŸãã APIå¿çããã£ãã·ã¥ããæ¹æ³ã次ã«ç€ºããŸãã
import { cache } from 'react';
const fetchWeatherData = cache(async (city: string) => {
const apiUrl = `https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=${city}&aqi=no`;
const response = await fetch(apiUrl);
if (!response.ok) {
throw new Error(`Failed to fetch weather data for ${city}`);
}
const data = await response.json();
return data;
});
async function WeatherDisplay({ city }: { city: string }) {
try {
const weatherData = await fetchWeatherData(city);
return (
Weather in {city}
Temperature: {weatherData.current.temp_c}°C
Condition: {weatherData.current.condition.text}
);
} catch (error: any) {
return Error: {error.message}
;
}
}
export default WeatherDisplay;
ãã®å ŽåãfetchWeatherDataããã£ãã·ã¥ãããŸãã ç¹å®ã®éœåžã®æ°è±¡ããŒã¿ãæåã«ãã§ããããããšãAPIåŒã³åºããè¡ããããã®çµæããã£ãã·ã¥ãããŸãã åãéœåžãžã®åŸç¶ã®èŠæ±ã¯ããã£ãã·ã¥ãããããŒã¿ãè¿ããŸãã YOUR_API_KEYãå®éã®APIããŒã«çœ®ãæããŠãã ããã
è€éãªèšç®ã®ãã£ãã·ã¥
cache颿°ã¯ããŒã¿ãã§ããã«éå®ãããŸããã è€éãªèšç®ã®çµæããã£ãã·ã¥ããããã«ã䜿çšã§ããŸãã
import { cache } from 'react';
const calculateFibonacci = cache((n: number): number => {
if (n <= 1) {
return n;
}
return calculateFibonacci(n - 1) + calculateFibonacci(n - 2);
});
function FibonacciDisplay({ n }: { n: number }) {
const fibonacciNumber = calculateFibonacci(n);
return The {n}th Fibonacci number is: {fibonacciNumber}
;
}
export default FibonacciDisplay;
calculateFibonacci颿°ããã£ãã·ã¥ãããŸãã ç¹å®ã®nã®ãã£ããããæ°ãæåã«èšç®ããããšãèšç®ãå®è¡ããããã®çµæããã£ãã·ã¥ãããŸãã åãnã«å¯ŸããåŸç¶ã®åŒã³åºãã¯ããã£ãã·ã¥ãããå€ãè¿ããŸãã ããã«ãããç¹ã«èšç®ãéåžžã«ã³ã¹ãã®ãããnã®å€ã倧ããå Žåã«ãããã©ãŒãã³ã¹ã倧å¹
ã«åäžããŸãã
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³åãã®é«åºŠãªãã£ãã·ã¥æŠç¥
cacheã®åºæ¬çãªäœ¿çšæ³ã¯ç°¡åã§ãããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã®åäœãæé©åããã«ã¯ãããé«åºŠãªæŠç¥ãå¿
èŠã§ãã ãããã®èŠå ãèæ
®ããŠãã ããã
ãã£ãã·ã¥ã®ç¡å¹åãšæéããŒã¹ã®æå¹æé
å€ãã®ã·ããªãªã§ã¯ããã£ãã·ã¥ãããããŒã¿ã¯äžå®æéåŸã«å€ããªããŸãã ããšãã°ãæ°è±¡ããŒã¿ã¯é »ç¹ã«å€åããçºæ¿ã¬ãŒãã¯åžžã«å€åããŸãã ãã£ãã·ã¥ãç¡å¹ã«ããããŒã¿ã宿çã«æŽæ°ããã¡ã«ããºã ãå¿
èŠã§ãã çµã¿èŸŒã¿ã®cache颿°ã¯æç€ºçãªæå¹æéãæäŸããŸããããèªåã§å®è£
ã§ããŸãã 1ã€ã®ã¢ãããŒãã¯ãcacheãšTTLïŒTime-To-LiveïŒã¡ã«ããºã ãçµã¿åãããããšã§ãã
import { cache } from 'react';
const cacheWithTTL = (fn: Function, ttl: number) => {
const cacheMap = new Map();
return async (...args: any[]) => {
const key = JSON.stringify(args);
const cached = cacheMap.get(key);
if (cached && Date.now() < cached.expiry) {
return cached.data;
}
const data = await fn(...args);
cacheMap.set(key, { data, expiry: Date.now() + ttl });
return data;
};
};
const fetchWeatherDataWithTTL = cacheWithTTL(async (city: string) => {
const apiUrl = `https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=${city}&aqi=no`;
const response = await fetch(apiUrl);
if (!response.ok) {
throw new Error(`Failed to fetch weather data for ${city}`);
}
const data = await response.json();
return data;
}, 60000); // TTL of 60 seconds
const CachedWeatherDisplay = async ({ city }: { city: string }) => {
try {
const weatherData = await fetchWeatherDataWithTTL(city);
return (
Weather in {city} (Cached)
Temperature: {weatherData.current.temp_c}°C
Condition: {weatherData.current.condition.text}
);
} catch (error: any) {
return Error: {error.message}
;
}
};
export default CachedWeatherDisplay;
ãã®äŸã§ã¯ãå
ã®é¢æ°ãã©ããããæå¹æéä»ãã®ãã£ãã·ã¥ãããã管çããé«é颿°cacheWithTTLãå®çŸ©ããŠããŸãã ãã£ãã·ã¥ããã颿°ãåŒã³åºããããšãæåã«ããŒã¿ããã£ãã·ã¥ã«ååšããæå¹æéãåããŠããªããã©ããã確èªãããŸãã äž¡æ¹ã®æ¡ä»¶ãæºãããããšããã£ãã·ã¥ãããããŒã¿ãè¿ãããŸãã ãã以å€ã®å Žåã¯ãå
ã®é¢æ°ãå®è¡ããããã®çµæãæå¹æéãšãšãã«ãã£ãã·ã¥ã«ä¿åãããçµæãè¿ãããŸãã ããŒã¿ã®å€åæ§ã«åºã¥ããŠttlã®å€ã調æŽããŸãã
ãã£ãã·ã¥ããŒãšåŒæ°ã®ã·ãªã¢ã«å
cache颿°ã¯ããã£ãã·ã¥ããŒãçæããããã«ããã£ãã·ã¥ããã颿°ã«æž¡ãããåŒæ°ã䜿çšããŸãã åŒæ°ãæ£ããã·ãªã¢ã«åããããã£ãã·ã¥ããŒããã£ãã·ã¥ãããããŒã¿ãæ£ç¢ºã«è¡šããŠããããšã確èªããããšãéèŠã§ãã è€éãªãªããžã§ã¯ãã®å Žåã¯ããã£ãã·ã¥ããŒãçæããããã«ãJSON.stringifyãªã©ã®äžè²«ããã·ãªã¢ã«åæ¹æ³ã䜿çšããããšãæ€èšããŠãã ããã è€æ°ã®è€éãªåŒæ°ãåãåã颿°ã®å Žåã¯ãåŒæ°ã®é åºããã£ãã·ã¥ããŒã«äžãã圱é¿ãåžžã«èæ
®ããŠãã ããã åŒæ°ã®é åºã倿Žãããšããã£ãã·ã¥ãã¹ãçºçããå¯èœæ§ããããŸãã
å°ååºæã®ãã£ãã·ã¥
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããŒã¿ã®é¢é£æ§ã¯å°åã«ãã£ãŠç°ãªãããšããããããŸãã ããšãã°ã補åã®åšåº«ç¶æ³ãäŸ¡æ Œèšå®ãããã³é éãªãã·ã§ã³ã¯ããŠãŒã¶ãŒã®å Žæã«ãã£ãŠç°ãªãå ŽåããããŸãã ãŠãŒã¶ãŒãæãé¢é£æ§ã®é«ãææ°æ å ±ã衚瀺ã§ããããã«ãå°ååºæã®ãã£ãã·ã¥æŠç¥ã®å®è£ ãæ€èšããŠãã ããã ããã¯ããŠãŒã¶ãŒã®å°åãŸãã¯å Žæããã£ãã·ã¥ããŒã®äžéšã«å«ããããšã§å®çŸã§ããŸãã
import { cache } from 'react';
const fetchProductData = cache(async (productId: string, region: string) => {
// å°ååºæã®APIãã補åããŒã¿ããã§ããããããšãã·ãã¥ã¬ãŒãããŸã
await new Promise(resolve => setTimeout(resolve, 300));
return { id: productId, name: `Product ${productId} (${region})`, price: Math.random() * 100, region };
});
async function ProductDisplay({ productId, region }: { productId: string; region: string }) {
const productData = await fetchProductData(productId, region);
return (
Product Details
ID: {productData.id}
Name: {productData.name}
Price: ${productData.price.toFixed(2)}
Region: {productData.region}
);
}
export default ProductDisplay;
ãã®äŸã§ã¯ãfetchProductData颿°ã¯productIdãšregionã®äž¡æ¹ãåŒæ°ãšããŠåãåããŸãã ãã£ãã·ã¥ããŒã¯ããããã®äž¡æ¹ã®å€ã«åºã¥ããŠçæãããç°ãªãå°åãç°ãªããã£ãã·ã¥ããŒã¿ãåãåãããã«ããŸãã ããã¯ãeã³ããŒã¹ã¢ããªã±ãŒã·ã§ã³ããããŒã¿ãå°åã«ãã£ãŠå€§ããç°ãªãã¢ããªã±ãŒã·ã§ã³ã§ç¹ã«éèŠã§ãã
CDNã䜿çšãããšããžãã£ãã·ã¥
Reactã®cache颿°ã¯ãµãŒããŒåŽã®ãã£ãã·ã¥ãæé©åããŸãããã³ã³ãã³ãé
ä¿¡ãããã¯ãŒã¯ïŒCDNïŒã掻çšããŠãšããžãã£ãã·ã¥ãããã«åŒ·åã§ããŸãã CDNã¯ããµãŒããŒã³ã³ããŒãã³ãããã®äºåã«ã¬ã³ããªã³ã°ãããHTMLãå«ããã¢ããªã±ãŒã·ã§ã³ã®ã¢ã»ãããäžçäžã®ãŠãŒã¶ãŒã«è¿ããµãŒããŒã«ä¿åããŸãã ããã«ãããã¬ã€ãã³ã·ãåæžãããã¢ããªã±ãŒã·ã§ã³ã®èªã¿èŸŒã¿é床ãåäžããŸãã CDNãæ§æããŠãµãŒããŒããã®å¿çããã£ãã·ã¥ããããšã«ããããªãªãžã³ãµãŒããŒã®è² è·ã倧å¹
ã«åæžããã°ããŒãã«ã«ãŠãŒã¶ãŒã«é«éã§ããå¿çæ§ã®é«ããšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸãã
ãã£ãã·ã¥ããã©ãŒãã³ã¹ã®ç£èŠãšåæ
ãã£ãã·ã¥æŠç¥ã®ããã©ãŒãã³ã¹ãç£èŠããã³åæããŠãæœåšçãªããã«ããã¯ãç¹å®ãããã£ãã·ã¥ãããçãæé©åããããšãéèŠã§ãã ãµãŒããŒåŽã®ç£èŠããŒã«ã䜿çšããŠããã£ãã·ã¥ã®ãããçãšãã¹çããã£ãã·ã¥ãµã€ãºãããã³ãã£ãã·ã¥ããã颿°ã®å®è¡ã«è²»ããããæéã远跡ããŸãã ãã®ããŒã¿ãåæããŠããã£ãã·ã¥æ§æã埮調æŽããTTLå€ã調æŽãããããªãæé©åã®æ©äŒãç¹å®ããŸãã PrometheusãGrafanaãªã©ã®ããŒã«ã¯ããã£ãã·ã¥ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ãèŠèŠåããã®ã«åœ¹ç«ã¡ãŸãã
äžè¬çãªèœãšã穎ãšãã¹ããã©ã¯ãã£ã¹
cache颿°ã¯åŒ·åãªããŒã«ã§ãããäžè¬çãªèœãšã穎ãèªèããäºæããªãåé¡ãåé¿ããããã«ãã¹ããã©ã¯ãã£ã¹ã«åŸãããšãäžå¯æ¬ ã§ãã
éå°ãªãã£ãã·ã¥
ãã¹ãŠããã£ãã·ã¥ããããšãåžžã«è¯ããšã¯éããŸããã å€åæ§ã®é«ãããŒã¿ãããã£ãã«ã¢ã¯ã»ã¹ãããªãããŒã¿ããã£ãã·ã¥ãããšãäžå¿ èŠãªã¡ã¢ãªãæ¶è²»ããããšã§ãå®éã«ã¯ããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãã ãã£ãã·ã¥ããŠããããŒã¿ãæ³šææ·±ãæ€èšããèšç®ãŸãã¯ããŒã¿ãã§ããã®åæžã«é¢ããŠå€§ããªã¡ãªãããããããšã確èªããŠãã ããã
ãã£ãã·ã¥ã®ç¡å¹åã®åé¡
ãã£ãã·ã¥ãæ£ããç¡å¹åããªããšãå€ãããŒã¿ããŠãŒã¶ãŒã«æäŸãããå¯èœæ§ããããŸãã ãã£ãã·ã¥ã®ç¡å¹åããžãã¯ãå ç¢ã§ããããã¹ãŠã®é¢é£ããããŒã¿äŸåé¢ä¿ãèæ ®ããŠããããšã確èªããŠãã ããã ã¿ã°ããŒã¹ã®ç¡å¹åãäŸåé¢ä¿ããŒã¹ã®ç¡å¹åãªã©ã®ãã£ãã·ã¥ç¡å¹åæŠç¥ã䜿çšããŠãããŒã¿ã®æŽåæ§ã確ä¿ããããšãæ€èšããŠãã ããã
ã¡ã¢ãªãªãŒã¯
æ£ãã管çããªããšããã£ãã·ã¥ãããããŒã¿ãæéã®çµéãšãšãã«èç©ãããã¡ã¢ãªãªãŒã¯ãçºçããå¯èœæ§ããããŸãã ãã£ãã·ã¥ã®ãµã€ãºãå¶éããæåŸã«äœ¿çšããããšã³ããªïŒLRUïŒãåé€ããŠãéå°ãªã¡ã¢ãªæ¶è²»ãé²ãã¡ã«ããºã ãå®è£
ããŸãã åã«æäŸãããcacheWithTTLã®äŸã¯ããã®ãªã¹ã¯ã®è»œæžã«ã圹ç«ã¡ãŸãã
ãã¥ãŒã¿ãã«ããŒã¿ã䜿çšããcacheã®äœ¿çš
cache颿°ã¯ããã£ãã·ã¥ããŒã決å®ããããã«ãåŒæ°ã®åç
§ç䟡æ§ã«äŸåããŸãã ãã¥ãŒã¿ãã«ããŒã¿æ§é ãåŒæ°ãšããŠæž¡ãå Žåããããã®ããŒã¿æ§é ã«å¯Ÿãã倿Žã¯ãã£ãã·ã¥ããŒã«åæ ãããªããããäºæããªãåäœãçºçããŸãã åžžã«äžå€ããŒã¿ãæž¡ããããã£ãã·ã¥ããã颿°ã«æž¡ãåã«ãã¥ãŒã¿ãã«ããŒã¿ã®ã³ããŒãäœæããŠãã ããã
ãã£ãã·ã¥æŠç¥ã®ãã¹ã
ãã£ãã·ã¥æŠç¥ãæåŸ ã©ããã«æ©èœããŠããããšã確èªããããã«ã培åºçã«ãã¹ãããŠãã ããã ãŠããããã¹ããäœæããŠããã£ãã·ã¥ããã颿°ãæ£ããçµæãè¿ãããã£ãã·ã¥ãé©åã«ç¡å¹åãããŠããããšãæ€èšŒããŸãã çµ±åãã¹ãã䜿çšããŠãçŸå®äžçã®ã·ããªãªãã·ãã¥ã¬ãŒããããã£ãã·ã¥ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã枬å®ããŸãã
çµè«
React cache颿°ã¯ãã¡ã¢ãªç®¡çãæé©åããã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã®Server Componentsã®ããã©ãŒãã³ã¹ãåäžãããããã®è²ŽéãªããŒã«ã§ãã cacheã®ä»çµã¿ãçè§£ããé«åºŠãªãã£ãã·ã¥æŠç¥ãå®è£
ããäžè¬çãªèœãšã穎ãåé¿ããããšã«ãããäžçäžã®ãŠãŒã¶ãŒã«ã·ãŒã ã¬ã¹ãªãšã¯ã¹ããªãšã³ã¹ãæäŸãããããã¹ã±ãŒã©ãã«ã§å¿çæ§ãé«ããå¹ççãªWebã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®èŠä»¶ãæ³šææ·±ãæ€èšããããã«å¿ããŠãã£ãã·ã¥æŠç¥ã調æŽããããšãå¿ããªãã§ãã ããã
ãããã®æŠç¥ãå®è£ ããããšã«ãããéçºè ã¯ãããã©ãŒãã³ã¹ã«åªããŠããã ãã§ãªããã¹ã±ãŒã©ãã«ã§ä¿å®å¯èœãªReactã¢ããªã±ãŒã·ã§ã³ãäœæããã°ããŒãã«ãªãŠãŒã¶ãŒã«åªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸãã 广çãªã¡ã¢ãªç®¡çã¯ããã¯ãåŸä»ãã§ã¯ãªããææ°ã®Webéçºã®éèŠãªã³ã³ããŒãã³ãã§ãã